package com.Dec_Twentytwo;

/**
 * 1419. 数青蛙
 * 给你一个字符串 croakOfFrogs，它表示不同青蛙发出的蛙鸣声（字符串 "croak" ）的组合。由于同一时间可以有多只青蛙呱呱作响，所以 croakOfFrogs 中会混合多个 “croak” 。
 *
 * 请你返回模拟字符串中所有蛙鸣所需不同青蛙的最少数目。
 *
 * 要想发出蛙鸣 "croak"，青蛙必须 依序 输出 ‘c’, ’r’, ’o’, ’a’, ’k’ 这 5 个字母。如果没有输出全部五个字母，那么它就不会发出声音。如果字符串 croakOfFrogs 不是由若干有效的 "croak" 字符混合而成，请返回 -1 。
 *
 *  
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/minimum-number-of-frogs-croaking
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * 2022/11/22 19:34
 */

public class Solution1419 {

    public int minNumberOfFrogs(String croakOfFrogs) {
        int c=0,r=0,o=0,a=0,k=0,ans=0;
        for (char ch:croakOfFrogs.toCharArray()){
            if (ch=='c') c++;
            else if (ch=='r') r++;
            else if (ch=='o') o++;
            else if (ch=='a') a++;
            else if (ch=='k') k++;
            else return -1;
            if (r>c||o>r||a>o||k>a) return -1;
            if (k==1){
                c--;
                r--;
                o--;
                a--;
                k--;
            }
            ans = Math.max(c, ans);
        }
        if (c!=0) return -1;
        return ans;
    }

    public static void main(String[] args) {
        Solution1419 solution1419=new Solution1419();
        System.out.println(solution1419.minNumberOfFrogs("croakcroak"));
    }

}
